In traditional public key settings, to thwart man-in-the-middle attacks, certificates are issued on user-generated public keys to ensure authenticity. However, the infrastructure needed to issue and manage certificates has shown to be very costly to establish and maintain. More importantly, the need to obtain and verify certificates (or certificate chains) can incur substantial computational overhead. For instance, certificate authorities must maintain active or expired certificates, issue new certificates, and verify certificates. While computational overhead in issuing, maintaining, and verifying certificates might be tolerable for certain hardware, it can be non-ideal for internet-of-things (IoT) devices where heterogeneous low-end devices need to communicate securely with minimal use of computational resources.